The best way to wrap the source table in LaTeX is to use the
comment environment provided by comment.sty. It has to be activated by
placing \usepackage{comment} into the document
header. Orgtbl mode can insert a radio table skeleton1
with the command M-x orgtbl-insert-radio-table. You
will be prompted for a table name, let's say we use
‘salesfigures’. You will then get the
following template:
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\begin{comment}
#+ORGTBL: SEND salesfigures orgtbl-to-latex
| | |
\end{comment}
The #+ORGTBL: SEND line tells Orgtbl mode to use
the function orgtbl-to-latex to convert the table
into LaTeX and to put it into the receiver location with name
salesfigures. You may now fill in the
table—feel free to use the spreadsheet features2:
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\begin{comment}
#+ORGTBL: SEND salesfigures orgtbl-to-latex
| Month | Days | Nr sold | per day |
|-------+------+---------+---------|
| Jan | 23 | 55 | 2.4 |
| Feb | 21 | 16 | 0.8 |
| March | 22 | 278 | 12.6 |
#+TBLFM: $4=$3/$2;%.1f
% $ (optional extra dollar to keep font-lock happy, see footnote)
\end{comment}
When you are done, press C-c C-c in the table to get the converted table inserted between the two marker lines.
Now let's assume you want to make the table header by hand, because you want to control how columns are aligned, etc. In this case we make sure that the table translator skips the first 2 lines of the source table, and tell the command to work as a splice, i.e. to not produce header and footer commands of the target table:
\begin{tabular}{lrrr}
Month & \multicolumn{1}{c}{Days} & Nr.\ sold & per day\\
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\end{tabular}
%
\begin{comment}
#+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
| Month | Days | Nr sold | per day |
|-------+------+---------+---------|
| Jan | 23 | 55 | 2.4 |
| Feb | 21 | 16 | 0.8 |
| March | 22 | 278 | 12.6 |
#+TBLFM: $4=$3/$2;%.1f
\end{comment}
The LaTeX translator function orgtbl-to-latex is
already part of Orgtbl mode. It uses a tabular
environment to typeset the table and marks horizontal lines with
\hline. Furthermore, it interprets the following
parameters (see also see Translator
functions):
:splice nil/t:fmt fmt%s for the original field value. For example, to
wrap each field value in dollars, you could use :fmt
"$%s$". This may also be a property list with column
numbers and formats. for example :fmt (2 "$%s$" 4
"%s\\%%"). A function of one argument can be used in
place of the strings; the function must return a formatted
string.:efmt efmt%s twice for inserting mantissa
and exponent, for example "%s\\times10^{%s}". The
default is "%s\\,(%s)". This may also be a
property list with column numbers and formats, for example
:efmt (2 "$%s\\times10^{%s}$" 4
"$%s\\cdot10^{%s}$"). After efmt has been
applied to a value, fmt will also be applied.
Similar to fmt, functions of two arguments can be
supplied instead of strings.[1] By default this works only for LaTeX,
HTML, and Texinfo. Configure the variable
orgtbl-radio-tables to install templates for other
modes.
[2] If the ‘#+TBLFM’ line contains an odd number
of dollar characters, this may cause problems with font-lock in
LaTeX mode. As shown in the example you can fix this by adding
an extra line inside the comment environment that
is used to balance the dollar expressions. If you are using
AUCTeX with the font-latex library, a much better solution is
to add the comment environment to the variable
LaTeX-verbatim-environments.